package cn.bby.query.base.ann;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author ben
 * @since 2025/4/15 00:12
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface CacheTableGroup {
    /**
     * 主表物理表名
     */
    CacheTable mainTable();

    /**
     * 子表
     */
    CacheTable[] subTables() default {};

    /**
     * 主键
     */
    String primaryField() default "id";

    /**
     * 创建时间字段
     */
    String createTimeField() default "";

    /**
     * 主键是否自增
     */
    boolean isPrimaryIncrement() default false;


    /**
     * 索引字段，给出VO中的字段，每行一个索引，初始化时可能会为这些字段创建索引以加速查询
     */
    Index[] indexFields() default {};

    @interface Index {
        /**
         * 索引字段，给出VO中的字段
         */
        String[] value() default {};
    }
}
